import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
#读取“1～3月入职员工信息.xlsx”文件4个工作表的数据
df = pd.read_excel('1—3月入职员工信息.xlsx', index_col=0, sheet_name=['1月', '2月', '3月', '1月员工补充信息'])
df1_1, df1_2 = df['1月'], df['1月员工补充信息']#获取1月入职员工信息及其补充信息
df2, df3 = df['2月'], df['3月']#获取1月和2月入职员工信息
df1 = pd.merge(df1_1, df1_2)#横向合并1月入职员工信息及其补充信息
df_total = pd.concat([df1, df2, df3])#纵向连接1月、2月和3月入职员工的信息
df_total = df_total.reset_index(drop=True)#重置连续行索引
print('1～3月入职员工的信息：\n', df_total)

groups = df_total.groupby('学历')         #按学历分组
for group in groups:
    print(group)
print(groups.agg('mean', numeric_only=True)['基本工资'])  # 求均值聚合
# print(groups['基本工资'].agg('mean'))  # 先筛选列再聚合
'''
按 “学历” 对员工数据进行分组后，循环打印出每一组的完整信息，包括分组的 “学历标签” 和该学历对应的所有员工数据。
代码逻辑拆解
1. groups = df_total.groupby('学历')
对df_total（1-3 月入职员工的完整数据）按 “学历” 列进行分组，得到分组对象groups。
分组规则：将 “学历” 列中值相同的行归为一组，比如 “本科” 为一组，“硕士” 为一组（根据你之前的数据，学历只有这两类）。
此时groups本身不直接存储数据，而是存储分组的规则和索引，需要通过循环或聚合操作才能获取具体分组内容。
2. for group in groups: print(group)
循环遍历分组对象groups，每次循环会取出一个 “分组元组”group。
每个group包含两个部分：
第一部分：分组的 “标签值”，即 “学历” 列的唯一值（如'本科'或'硕士'）。
第二部分：该标签对应的所有员工数据，是一个小型的 DataFrame，包含该学历下所有员工的 “姓名”“职务”“基本工资” 等完整信息。'''